import { TonOrder } from "@/river-ton/schema.order";
import { StockNodeGateway } from "./dto.node";
import { TonSku } from "@/river-ton/schema.sku";

export const RiverStockRpcDoStockNotchBusyCheckPath = `${StockNodeGateway.path}/doBusyCheck`;

export const RiverStockRpcResetOrderStockPath = `${StockNodeGateway.path}/resetOrderStock`;
export type resetOrderStockRpcDto = { exist: TonOrder };

export const RiverStockRpcResetCommonStockPath = `${StockNodeGateway.path}/resetCommonStock`;
export type resetCommonStockRpcDto = { existLs: TonSku[] };

export interface RiverStockNotchRpcInterface<T> {
  /** 根据商品，重新计算常规库存 */
  resetCommonStock(dto: T & resetCommonStockRpcDto): void;

  /** 为一张订单创建库存，并重新计算这些库存 */
  resetOrderStock(dto: T & resetOrderStockRpcDto): void;

  // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░░░░▄▄▄▄▄▄░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░░▄█▀▀▀▀▀█▄░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░▄█░░▄▄▄░░█▄░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░█░░█▀▀█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░█░░█▀▀█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░█░░█▄▄█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░▀▄▀▄▄▄▄▄▀▄▀░░░░░░░░░░░░░░░░░░░░░░░░░░
  // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  Read

  /** 库存任务是否繁忙（如果繁忙就会报错）*/
  doBusyCheck(dto: T & { maxTask?: number }): Promise<{ count: number }>;
}
